using System;
using System.Collections.Generic; 
using System.Collections;
using System.Linq;
using System.Diagnostics;
using System.Xml;
using System.Xml.Schema; 
using System.Xml.Linq; 
using System.Xml.XPath;
using Metaspec;
using AbstraX.ParserInterfaces;

namespace CsParser
{
	/// ID=/AssembliesRoot[@URL='AbstraX://MCLaptop64/AssembliesRoot']/Assembly[@AssemblyFile='C:\Users\Ken\Documents\Mind Chemistry\SolutionFramework\Binaries\CsTransformationParserLibrary.dll']/AssemblyType[@Type='Metaspec.CsCompilationUnit']
	/// Name=CsCompilationUnit
	/// 
	/// ****************** DataType ******************
	/// 
	/// Type='CsCompilationUnit'
	/// FQN='Metaspec.CsCompilationUnit'
	/// IsCollectionType='False'
	/// 
	/// 
	/// ****************** Modifiers ******************
	/// 
	/// CanRead=false
	/// CanWrite=false
	/// IsLocal=false
	/// NotNavigable=false
	/// NotApplicable=false
	/// 
	/// **********************************************
 	public class CodeCompilationUnit : CodeScopeNodeWithUsingDirectives, ICodeCompilationUnit
	{
		private CsCompilationUnit csCompilationUnit;

        public CodeCompilationUnit(CsCompilationUnit csCompilationUnit) : base(csCompilationUnit)
        {
            this.csCompilationUnit = csCompilationUnit;
        }

		/// ------------------------------------ NavigationItem ------------------------------------
		/// 
		/// Property: 'attributes' returns type: 'Metaspec.CsAttributes'
		/// CanRead: true
		/// CanWrite: true
		/// 
		/// ----------------------------------------------------------------------------------
        public List<CsAttributes> Attributes 
        { 
            get
            {
                
            }
        }

        /// ------------------------------------ NavigationItem ------------------------------------
        /// 
        /// Property: 'declarations' returns type: 'System.Collections.Generic.List`1[[Metaspec.CsNode, CsTransformationParserLibrary, Version=5.0.0.238, Culture=neutral, PublicKeyToken=null]]'
        /// CanRead: true
        /// CanWrite: true
        /// 
        /// ----------------------------------------------------------------------------------
        public List<CodeNode> Declarations
        {
            get
            {
                var list = new List<CodeNode>();

                foreach (var node in csCompilationUnit.declarations)
                {
                    if (node is CsCompilationUnit)
                    {
                        list.Add(new CodeCompilationUnit((CsCompilationUnit)node));
                    }
                }

                return list;
            }
        }

		/// ------------------------------------ NavigationItem ------------------------------------
		/// 
		/// Property: 'file' returns type: 'Metaspec.CsFile'
		/// CanRead: true
		/// CanWrite: true
		/// 
		/// ----------------------------------------------------------------------------------
        public CodeFile File 
        { 
            get
            {
                return new CodeFile(csCompilationUnit.file);
            }
        }

    }
}
